const fp = require('lodash/fp')
// 数据
// horsepower 马力, dollar_value 价格, in_stock 库存
const cars = [{
        name: 'Ferrari FF',
        horsepower: 660,
        dollar_value: 700000,
        in_stock: true
    },
    {
        name: 'Spyker C12 Zagato',
        horsepower: 650,
        dollar_value: 648000,
        in_stock: false
    },
    {
        name: 'Jaguar XKR-S',
        horsepower: 550,
        dollar_value: 132000,
        in_stock: false
    },
    {
        name: 'Audi R8',
        horsepower: 625,
        dollar_value: 114200,
        in_stock: false
    },
    {
        name: 'Aston Martin One-7',
        horsepower: 750,
        dollar_value: 1850000,
        in_stock: true
    },
    {
        name: 'Pagani Huayara',
        horsepower: 700,
        dollar_value: 1300000,
        in_stock: true
    }
]

/*
  练习1:  
    let last_car = fp.last(cars)   获取最后一条数据
    fp.prop('in_stock', last_car)  获取最后一条数据的 in_stock 属性值

  实现 isLastInStock 函数, 要求使用 fp.flowRight() 
  把 fp.last(), fp.prop() 组合而成
*/

// 1.实现 isLastInStock 函数
function isLastInStock (cars) {
  return fp.flowRight([fp.prop('in_stock'),fp.last])(cars)
}
// 2.打印测试
console.log( isLastInStock(cars) )  // 最终返回 true

let _average = function (xs) {
  return fp.reduce(fp.add, 0, xs) / xs.length
}
// 1.实现 averageDollarValue 函数
function averageDollarValue (cars) {
  return fp.flowRight(_average, fp.map(car => car.dollar_value))(cars)
}
// 2.打印测试
console.log( averageDollarValue(cars) )  // 最终返回 

let _underscore = fp.replace(/\W+/g, '_')
// 1.实现 sanitizeNames 函数
function sanitizeNames (cars) {
  return fp.flowRight(fp.map(car => _underscore(car.name)))(cars)
}
// 2.打印测试
console.log( sanitizeNames(cars) )